// 修改数组

// 稀疏数组
const arr = [22,,33,,,55];
console.log( arr );
console.log( arr.length );

// Array.prototype.fill( element [, start [, end ] ] )
arr.fill( 44, 3, 5 );
console.log( arr );

arr.fill( 66, 3 );
console.log( arr );

arr.fill( 88 );
console.log( arr );

let count = 1;
arr.forEach( (element,index,array) => {
    array[index] = count++ ;
} );

console.log( arr );

// Array.prototype.reverse() 用于翻转数组
let x = arr.reverse();
console.log( arr );
console.log( x === arr ); // true

const names = [ '白骨精', '黄袍怪', '金角大王', '银角大王' ];
// Array.prototype.splice( start [, deleteCount [, ...item] ])

// splice(start) 删除从参数对应位置开始至数组末尾的元素 并 以数组形式返回被删除的元素
let removed = names.splice( 2 );
console.log( names );
console.log( removed === names );
console.log( removed );

names.push('虎力大仙','鹿力大仙','羊力大仙','牛魔王');
console.log( names );

// splice(start, count) 删除并返回数组中从start开始的count个元素
removed = names.splice( 2, 3 );
console.log( names );
console.log( removed );

// splice(start, count, item) 删除从start处开始的count个元素并在start处插入新元素
removed = names.splice( 1, 1, '铁扇仙' );
console.log( names );
console.log( removed );

// splice(start, 0, item) 在 start 处依次插入新元素
removed = names.splice( 3, 0, '玉面狐狸' );
console.log( names );
console.log( removed );

// 总结:
// Array.prototype.fill( element [ , start [ , end] ] ) 填充数组指定区间
// Array.prototype.reverse() 翻转数组 (原数组中的顺序翻转)
// Array.prototype.splice( start [, deleteCount [, ...item] ] ) 用于在数组指定位置实现删除、替换、插入操作